/*
 * finger_code.h
 *
 *  Created on: 05-03-2012
 *      Author: czareq
 */

#ifndef FINGER_CODE_H_
#define FINGER_CODE_H_

#include "../minutia/Minutia_container.h"
#include "../common/Config.h"
#include "../code/Crate_code.h"

class Finger_code
{
private:
	list<Minutia_container> warp_positions;
	vector<bool> code;
	int segments;

	pair<double, double> XY_function(int, int, int, int);
	pair<double, double> XY_function(pair<double, double>, int, int, double);
	pair<int, int> XY_function_cross(pair<double, double>, pair<double, double>);
public:
	Finger_code();
	~Finger_code();
	void warp(Minutia_container);
	list<pair<int, int> > warp_points();
	Minutia_container translate_warp(Minutia_container, pair<int, int>);
	Minutia_container rotate_warp(Minutia_container, pair<int, int>, int);
	vector<bool> get_code(Minutia_container);
	int get_segment_size();
	int get_segment_count();
};

#endif /* FINGER_CODE_H_ */
